# Q. What is this file?
# A. This file contains options which allow you to configure your multiworld experience while allowing
#    others to play how they want as well.
#
# Q. How do I use it?
# A. The options in this file are weighted. This means the higher number you assign to a value, the
#    more chances you have for that option to be chosen. For example, an option like this:
#
#    map_shuffle:
#      on: 5
#      off: 15
#
#    Means you have 5 chances for map shuffle to occur, and 15 chances for map shuffle to be turned
#    off.
#
# Q. I've never seen a file like this before. What characters am I allowed to use?
# A. This is a .yaml file. You are allowed to use most characters.
#    To test if your yaml is valid or not, you can use this website:
#        http://www.yamllint.com/
#    You can also verify that your Archipelago options are valid at this site:
#        https://archipelago.gg/check

# Your name in-game, limited to 16 characters.
#     {player} will be replaced with the player's slot number.
#     {PLAYER} will be replaced with the player's slot number, if that slot number is greater than 1.
#     {number} will be replaced with the counter value of the name.
#     {NUMBER} will be replaced with the counter value of the name, if the counter value is greater than 1.
name: Player{number}

# Used to describe your yaml. Useful if you have multiple files.
description: Default Crash Team Racing Template

game: Crash Team Racing
requires:
  version: 0.6.7 # Version of Archipelago required for this yaml to work as expected.
  game:
    Crash Team Racing: 0.1.5 # Version of the world required for this yaml to work as expected.

Crash Team Racing:
  ################
  # Game Options #
  ################
  progression_balancing:
    # A system that can move progression earlier, to try and prevent the player from getting stuck and bored early.
    # 
    # A lower setting means more getting stuck. A higher setting means less getting stuck.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 99
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-99: 0 # random value between 0 and 99
    disabled: 0 # equivalent to 0
    normal: 50 # equivalent to 50
    extreme: 0 # equivalent to 99

  accessibility:
    # Set rules for reachability of your items/locations.
    # 
    # **Full:** ensure everything can be reached and acquired.
    # 
    # **Minimal:** ensure what is needed to reach your goal can be acquired.
    full: 50
    minimal: 0

  ########
  # Goal #
  ########
  goal:
    # Determines the player's end goal.
    # 
    # - **oxide** (default): defeat N. Oxide's Challenge.
    # - **oxidefinal**: collect relics, then defeat N. Oxide's Final Challenge.
    # - **allbosses**: win all 4 boss races (Ripper Roo, Papu Papu, Komodo Joe, Pinstripe).
    # - **allgemcups**: collect all 5 Gems. Requires `Include Gem Cup Warp Pads` on:
    #   with `Shuffle Gems` off the Gems sit on their own Gem Cups, with it on they
    #   hide anywhere in the multiworld.
    oxide: 50
    oxidefinal: 0
    allbosses: 0
    allgemcups: 0

  oxide_final_challenge_unlock:
    # Which relics turn Oxide's Challenge into Oxide's Final Challenge. The
    # count comes from `Oxide's Final Challenge Relic Count`.
    # 
    # - **sapphire_relics** (default), **gold_relics**, **platinum_relics**: that
    #   many relics of that tier.
    # - **any_relic_type**: any single tier reaches the count.
    # - **total_relics**: all relics added together reach the count.
    # 
    # Tiers are independent: a Platinum relic does not count toward a Gold
    # requirement. Requiring a tier whose progression option is `never` fails
    # generation. The old `18_gold_and_platinum_relics` value was removed.
    sapphire_relics: 50
    gold_relics: 0
    platinum_relics: 0
    any_relic_type: 0
    total_relics: 0

  oxide_final_challenge_relic_count:
    # How many relics `Oxide's Final Challenge Unlock` requires (1-18). For
    # total_relics it is the summed total; for any_relic_type it is the threshold
    # any single tier must reach.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 1
    # Maximum value is 18
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-1-18: 0 # random value between 1 and 18
    all: 50 # equivalent to 18

  ################
  # Items & Pool #
  ################
  shuffle_gems:
    # Shuffle the 5 Gems into the multiworld item pool.
    # 
    # - **on** (default): the Gems can appear anywhere; their Gem Cup locations
    #   become normal checks.
    # - **off**: each Gem stays on its own Gem Cup reward (vanilla placement).
    # 
    # Works with every goal, including `All Gems`.
    'false': 0
    'true': 50

  include_gem_cups:
    # Bring the 5 Gem Cups and their races into the seed: their checks become
    # normal locations and, in a randomized-unlock seed, their warp pads get a
    # randomized entry requirement.
    # 
    # - Not the same as `Shuffle Gems`: that moves the Gem items around; this one
    #   includes the cup races themselves. Must be on for the `All Gems` goal.
    # - **off**: cups stay fully vanilla, and shuffled Gems are pinned back onto
    #   their own cups.
    'false': 0
    'true': 50

  shuffle_keys:
    # Shuffle the 4 boss Keys into the multiworld item pool.
    # 
    # - **on** (default): the Keys can appear anywhere; the Boss Race locations
    #   become normal checks.
    # - **off**: each Key stays on its Boss Race reward (vanilla placement).
    'false': 0
    'true': 50

  trap_fill_percentage:
    # What percentage of this slot's filler items are replaced by traps (Icy
    # Road, Low Gravity, No Brakes, Forced Boost, First Person -- each equally
    # likely).
    # 
    #   0             = no traps, filler stays Wumpa Fruit
    #   10  (default) = a taste of sabotage
    #   100           = every filler slot becomes a trap
    # 
    # Traps never gate anything. A received trap arms silently and fires mid-race
    # on a later lap.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 100
    10: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-100: 0 # random value between 0 and 100

  #############
  # Warp Pads #
  #############
  include_battle_arenas:
    # Bring the 4 Battle Arenas and their Crystal Challenges into the seed:
    # their checks become normal locations and, in a randomized-unlock seed, their
    # warp pads get a randomized entry requirement.
    # 
    # - **off**: the arenas are fully out of the seed and never logically
    #   required -- vanilla gates, vanilla Purple CTR Token rewards, and no
    #   randomized requirement ever demands Purple tokens. They stay playable.
    # - Not the same as `crystals` in `Warp Pad Shuffle Categories`: this puts the
    #   arenas in the seed at all; that category only shuffles destinations.
    'false': 0
    'true': 50

  warp_pad_shuffle_categories:
    # Which content categories take part in warp-pad destination shuffle. A
    # category left out always loads its own content.
    # 
    # - **tracks**: the 16 trophy races plus Slide Coliseum and Turbo Track.
    # - **cups**: the 5 Gem Cups (needs `Include Gem Cup Warp Pads` on).
    # - **crystals**: the 4 Battle Arenas (needs `Include Battle Arena Warp Pads` on).
    # 
    # Default: all three. Empty set: no destination shuffle. Under vanilla unlock
    # requirements, tracks and crystals shuffle within themselves and cups stay
    # fixed.
    ['cups', 'crystals', 'tracks']

  warp_pad_shuffle_grouping:
    # How the categories in `Warp Pad Shuffle Categories` are pooled for
    # destination shuffle.
    # 
    # - **merged** (default): one cross-category pool -- a track slot can load a
    #   cup or crystal and vice versa. Needs a randomized unlock mode.
    # - **per_category**: each category shuffles only within itself.
    # 
    # Has no effect when fewer than two categories participate.
    # 
    # Gem Cups are the one exception to `merged`: a cup is never placed on a pad that
    # opens before the Cups Room's own two-Key door, so a cup can never be one of the
    # pads you start with. An early cup also advertises the podium checks of the four
    # trophy tracks it runs as legs, which is a large opening handout on tracks whose
    # own pads are still shut.
    per_category: 0
    merged: 50

  warp_pad_item_display:
    # How a warp pad shows the items still waiting on its checks.
    # 
    # A pad advertises its destination's unclaimed rewards in three floating slots.
    # 
    # - **one_pile** (default): every unclaimed item shares those slots and they
    #   cycle through the whole pile together, so a pad with a race, a CTR
    #   challenge, relics and podium rungs left mixes them all in one rotation.
    # - **by_reward_type**: each reward type keeps its own slot and only rotates
    #   within it, so you can tell at a glance whether the relic you see is the
    #   relic check or the CTR check. With the podium rungs on, the race slot can
    #   cycle through five or six items.
    # 
    # Purely a display setting: it changes nothing about which checks exist, what
    # they hold, or how anything unlocks. Needs a client that supports it -- an
    # older one shows one pile whatever this says.
    one_pile: 50
    by_reward_type: 0

  warppad_unlock_requirements:
    # How warp pads unlock -- the heart of the randomizer.
    # 
    # - **randomized** (default): every warp pad gets a randomized entry
    #   requirement (trophies, tokens, relics, keys, gems...), always collectable
    #   before that pad opens.
    # - **vanilla**: pads open on their vanilla trophy counts, like the original
    #   adventure.
    # - **random_without_4_keys**: like randomized, but the 4 boss Keys are never
    #   pad requirements.
    vanilla: 0
    randomized: 50
    random_without_4_keys: 0

  two_stage_density:
    # How many trophy pads carry a real second-stage gate, meaning an extra
    # requirement on the pad's CTR Challenge and relic Time Trials on top of
    # winning the Trophy Race. Only affects the randomized warp pad modes.
    # 
    # - **off**: no second gates.
    # - **light**: a few per seed (up to 4).
    # - **standard**: a moderate spread (up to 6).
    # - **deep**: layered progression (up to 10).
    # - **full** (default): every pad that can carry one gets one (up to 16).
    # 
    # Also accepts `random`. The densest settings can generate slower on
    # maxed-out configs.
    'off': 0
    light: 0
    standard: 0
    deep: 0
    full: 50

  requirement_variety:
    # Weight preset for randomized warp-pad requirements (randomized modes
    # only).
    # 
    # - **icebound_beta5** (default): Icebound's rebalanced weights -- still
    #   trophy-leaning, with more token, relic and key variety.
    # - **trophy_heavy_legacy**: the previous, more trophy-dominated weights.
    # - **custom**: use the weights from `Requirement Weights`.
    icebound_beta5: 50
    trophy_heavy_legacy: 0
    custom: 0

  requirement_weights:
    # Roll your own requirement mix. Used only when `Requirement Variety` =
    # custom. Each entry is `item name: weight` -- higher weight means picked more
    # often; 0 disables an item, except Trophy, which must stay above 0. Items you
    # leave out keep their default weight.
    # 
    # Example:
    # 
    #     requirement_variety: custom
    #     requirement_weights:
    #       Trophy: 30
    #       Key: 40
    #       Sapphire Relic: 40
    # 
    # Valid keys: Trophy, Key, the five CTR Token colours, the three Relic tiers,
    # and the five Gem colours.
    {}

  ################
  # Extra Checks #
  ################
  podium_placement_checks:
    # Add finishing-position checks to the 16 adventure trophy races -- the
    # master switch for the podium-rung feature.
    # 
    # - Finish rungs (`Podium Finish Rungs`): earned by where you cross the line.
    # - Held rungs (`Held-Position Rungs`): earned by the best position you hold
    #   during the race.
    # 
    # A better result awards every rung at or below it. These checks make room
    # for more items in the pool; they never advance adventure progression.
    'false': 0
    'true': 50

  podium_finish_rungs:
    # Include the finish-line rungs on each trophy race (needs `Podium
    # Placement Checks` on): "Finish on Podium" (top 3) and "Finish (Any
    # Position)". Toggle the any-position half with `Podium: Any-Position
    # Rung`.
    'false': 0
    'true': 50

  podium_any_position_rung:
    # Also include the "Finish (Any Position)" rung on each trophy race, earned
    # by simply crossing the finish line. Off keeps only "Finish on Podium". Needs
    # `Podium Finish Rungs` on.
    'false': 0
    'true': 50

  podium_held_rungs:
    # Include the live-position "held" rungs on each trophy race (needs `Podium
    # Placement Checks` on): "Held 1st" and "Held 3rd", earned the moment you hold
    # that position on track. Add "Held 5th" with `Podium: Held 5th Rung`.
    'false': 0
    'true': 50

  podium_held_fifth_rung:
    # Also add a "Held 5th" rung to each trophy race, earned by holding 5th
    # place or better at any point. Needs `Held-Position Rungs` on. Off by
    # default; turn it on for 16 extra early checks.
    'false': 50
    'true': 0

  ###################
  # Quality of Life #
  ###################
  one_lap_cups:
    # Make Cup races one lap each instead of the usual three. On by default.
    # 
    # Only cup races shorten (including the Gem Cups); single races, boss races,
    # relic time trials and CTR Token challenges keep their normal lap count.
    # Changes nothing about logic or which locations exist -- everything is just
    # faster.
    'false': 0
    'true': 50

  #############
  # DeathLink #
  #############
  death_link:
    # Share your wipeouts with the other DeathLink players, and take theirs.
    # 
    # - **off** (default): disabled.
    # - **mask_reset**: send a death only when the mask carries you back, meaning
    #   you fell off the track or were eaten. Low frequency.
    # - **any_hit**: also send on every hit that lands on you (spin-out, blast,
    #   squish, burn). Much higher frequency, so pair it with `DeathLink Amnesty`.
    # 
    # Receiving a death always forces the full mask reset on you. Only
    # adventure-mode races send.
    'off': 50
    mask_reset: 0
    any_hit: 0

  deathlink_amnesty:
    # How many of your deaths must pile up before one is actually sent. 1
    # (default) sends every death; N sends one per N. Meant for the `any_hit`
    # tier. Incoming deaths are unaffected -- amnesty only throttles what you
    # send.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 1
    # Maximum value is 30
    1: 50
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-1-30: 0 # random value between 1 and 30

  ####################
  # Relic Difficulty #
  ####################
  sapphire_relic_progression:
    # How often progression may sit behind a Sapphire relic-race time (the
    # easiest tier). Per-location % chance over the 18 Sapphire Time Trials; a
    # location that misses the roll keeps its vanilla Sapphire Relic and never
    # gates progression. 0 = never, 100 = full (default). Also accepts `random`.
    # 
    # The three tiers are a skill ladder (sapphire easy, platinum hard); setting
    # an easier tier lower than a harder one gives inverted difficulty.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 100
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-100: 0 # random value between 0 and 100
    never: 0 # equivalent to 0
    full: 50 # equivalent to 100

  gold_relic_progression:
    # How often progression may sit behind a Gold relic-race time (the medium
    # tier). Per-location % chance over the 18 Gold Time Trials; a location that
    # misses the roll keeps its vanilla Gold Relic. 0 = never, 100 = full
    # (default). Also accepts `random`. See `Sapphire Relic Progression` for the
    # skill-ladder note.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 100
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-100: 0 # random value between 0 and 100
    never: 0 # equivalent to 0
    full: 50 # equivalent to 100

  platinum_relic_progression:
    # How often progression may sit behind a Platinum relic-race time (the
    # hardest, expert-only tier). Per-location % chance over the 18 Platinum Time
    # Trials; a location that misses the roll keeps its vanilla Platinum Relic.
    # 0 = never (default, so a needed item never sits behind a platinum-only
    # time), 100 = full. Also accepts `random`.
    #
    # You can define additional values between the minimum and maximum values.
    # Minimum value is 0
    # Maximum value is 100
    random: 0
    random-low: 0 # random value weighted towards lower values
    random-high: 0 # random value weighted towards higher values
    random-range-0-100: 0 # random value between 0 and 100
    never: 50 # equivalent to 0
    full: 0 # equivalent to 100

  ###########################
  # Item & Location Options #
  ###########################
  local_items:
    # Forces these items to be in their native world.
    []

  non_local_items:
    # Forces these items to be outside their native world.
    []

  start_inventory:
    # Start with the specified amount of these items. Example: "Bomb: 1"
    {}

  start_hints:
    # Start with these item's locations prefilled into the ``!hint`` command.
    []

  start_location_hints:
    # Start with these locations and their item prefilled into the ``!hint`` command.
    []

  exclude_locations:
    # Prevent these locations from having an important item.
    []

  priority_locations:
    # Prevent these locations from having an unimportant item.
    []

  item_links:
    # Share part of your item pool with other players.
    []

  plando_items:
    # Generic items plando.
    []
